package com.mds.group.four.test;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class AppDAO {
	private static final String KEY_TITLE = "title";
//	private static final String KEY_IMG = "img";
//	private static final String KEY_WAV = "wav";
	private static final String DATABASE_TABLE = "app";
	private Context context;
	private SQLiteDatabase db;
	/** android 에서 제공하는 쿼리 메서드에 셋팅할 데이 */
	private ContentValues cv;
	
	public AppDAO(Context context) {
		this.context = context;
		db = new AppDBHelper(context).getWritableDatabase();
		cv = new ContentValues();
	}
	public boolean insertNote(String title) throws SQLException {
		cv.clear();				// cv 에 저장한 모든 데이터를 제
		cv.put(KEY_TITLE, title);
		return db.insert(DATABASE_TABLE, null, cv) > 0;
	}
	public boolean deleteNote(String title) throws SQLException {
		String[] data = new String[1];
		data[0] = title;
//		return db.delete(DATABASE_TABLE, KEY_ROWID + "=?", data) > 0;
		return db.delete(DATABASE_TABLE, KEY_TITLE + "=" + title, null) > 0;
	}
	public boolean updateNote(String id, String title) throws SQLException {
		cv.clear();
		cv.put(KEY_TITLE, title);
		/*
		 * update(DATABASE_TABLE, values, whereClause, whereArgs)
		 * 	table : table name
		 * 	values : 변경할 데이터를 저장 ContentValues 객체 
		 * 	whereCalause : 변경할 조건 
		 * 		null 인 경우 조건이 없으므로 모든 데이터를 변경
		 * 		조건을 문자열로 셋팅
		 * whereArgs : whereCalause 를 셋팅했다면 해당데이터는 String 배열로  
		 */
//		return db.update(DATABASE_TABLE, cv, "_id=?", new String[]{id}) > 0;
		return db.update(DATABASE_TABLE, cv, "_id=" + id, null) > 0;
	}
	public Cursor selectNote(String id) throws SQLException {
		/*	=> join 은 안됨.
		 * query(table, columns, selection, selectionArgs, groupBy, having, orderBy)
		 * 	table : table name
		 * 	columns : 추출할 column 들 null 일 경우 * 과 같음.
		 * 	selection : 추출할 조건 null 인 경우 조건을 주지 않음.
		 * 									=> selectionArgs 도 null 로
		 * 	selectionArgs : selection 의 조건에 따른 추출할 조건들의 값.
		 * 	groupBy : grouping 함수에 해당하는 grouping 할 column
		 * 	having : groupBy 에 대한 조건.
		 * 	orderBy : 정렬.
		 */
		return db.query(DATABASE_TABLE,
				new String[]{KEY_TITLE}, "_id=?", new String[]{id},null, null, null);		
	}
	public Cursor selectNotes() throws SQLException {
//		return db.rawQuery("select * from notes", null);
		return db.query(DATABASE_TABLE, null, null, null ,null, null, null);
	}
	public void close() {
		db.close();
		db = null;
	}
}
